package entity

import (
	"gorm.io/gorm"
	"time"
)

type SysMenu struct {
	MenuId              uint32 `gorm:"menu_id,primaryKey" json:"menu_id"`                  // 菜单ID
	ParentId            uint32 `gorm:"parent_id" json:"parent_id"`                         // 父级ID
	GroupId             uint32 `gorm:"group_id" json:"group_id" binding:"required"`        // 分组ID
	MenuKey             string `gorm:"menu_key" json:"menu_key" binding:"required"`        // 菜单KEY
	MenuName            string `gorm:"menu_name" json:"menu_name" binding:"required"`      // 菜单名称
	Description         string `gorm:"description" json:"description"`                     // 菜单描述
	PermId              uint32 `gorm:"perm_id" json:"perm_id"`                             // 权限ID
	Path                string `gorm:"path"json:"path"`                                    // 访问路径
	Component           string `gorm:"component" json:"component" binding:"required"`      // 组件名称
	Icon                string `gorm:"icon" json:"icon"`                                   // 图标样式
	Hidden              bool   `gorm:"hidden" json:"hidden"`                               // 是否隐藏菜单
	HiddenHeaderContent bool   `gorm:"hidden_header_content" json:"hidden_header_content"` // 特殊 隐藏 PageHeader 组件中的页面带的 面包屑和页面标题栏
	HideChildren        bool   `gorm:"hide_children" json:"hide_children"`                 // 是否隐藏子菜单
	Redirect            string `gorm:"redirect" json:"redirect"`                           // 重定向地址
	Target              string `gorm:"target" json:"target"`                               // 菜单设置(header_render:是否展示顶栏,footer_render:展示页脚,menu_render:是否展示菜单,menu_header_render:是否展示菜单顶栏,fixed_header:是否固定顶栏,fix_siderbar:是否固定菜单,nav_theme:导航菜单的主题,layout:导航菜单的位置,header_theme:顶部导航的主题)
	OrderNum            uint32 `gorm:"order_num" json:"order_num" binding:"min=0"`         // 排序数字，值越小越靠前
	CreatedAt           time.Time
	UpdatedAt           time.Time
	DeletedAt           gorm.DeletedAt `gorm:"index"`
}

func (e *SysMenu) TableName() string {
	return "sys_menus"
}
